package com.ee.chat.common.dao;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ee.chat.common.entity.UserAuditLog;
import org.apache.catalina.LifecycleState;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * <p>
 * Mapper接口
 * </p>
 *
 * @author Shane
 * @since 2019-08-17
 */
public interface UserAuditLogMapper extends BaseMapper<UserAuditLog> {
    /**
     * 获取最新的审核信息
     * @Author Shane
     * @Date 2019/8/17 16:02
     * @return
     */
    UserAuditLog selectNewest(@Param("userId") Integer userId);

    /**
     * 获取指定类型的最新审核信息
     * @Author Shane
     * @Date 2020/4/28 18:20
     * @param
     * @return
     */
    UserAuditLog selectAccecpt(@Param("userId") Integer userId, @Param("type") Integer type);

    int getAccecptCount(@Param("userId") Integer userId, @Param("type") Integer type);

    /**
     * 获取星座信息
     * @Author Shane
     * @Date 2019/10/5 21:44
     * @param
     * @return
     */
    Map<String, Object> getUSSById(@Param("id") Integer id);

    /**
     * 获取城市区划
     * @Author Shane
     * @Date 2019/10/5 21:55
     * @param
     * @return
     */
    Map<String, Object> getAreaByCode(@Param("adCode") Integer adCode);

    /**
     * 获取职业
     * @Author Shane
     * @Date 2020/4/1 17:46
     * @param
     * @return
     */
    Map<String, Object> getProById(@Param("id") Integer id);

    /**
     * 获取情感
     * @Author Shane
     * @Date 2020/4/1 17:46
     * @param
     * @return
     */
    Map<String, Object> getEmById(@Param("id") Integer id);

    /**
     * 获取审核信息列表
     * @Author Shane
     * @Date 2019/10/9 17:34
     * @param
     * @return
     */
    IPage<Map<String, Object>> list(Page page, @Param("userId") Integer userId, @Param("status") Integer status,
                                    @Param("beginTime") Date beginTime, @Param("endTime") Date endTime);

    /**
     * 获取资料更新审核列表
     * @Author AppiJ
     * @Date 2020/5/27 15:23
     * @param
     * @return
     */
    IPage<Map<String, Object>> queryUserInfoAuditList(Page page, @Param("userId") Integer userId, @Param("item") String item,
                                                      @Param("beginTime") Date beginTime, @Param("endTime") Date endTime,
                                                      @Param("status") Integer status);

    IPage<Map<String, Object>> registerList(Page page, @Param("userId") Integer userId, @Param("name") String name,
                                            @Param("beginTime") Date beginTime, @Param("endTime") Date endTime, @Param("status") Integer status);

    /**
     * 获取待审核数量
     * @Author AppiJ
     * @Date 2020/9/11 20:18
     * @param
     * @return
     */
    List<Map<String, Object>> queryNotAuditNum();

    /**
     * 根据审核类型获取用户在此之前最新的一个审核记录
     * @Author AppiJ
     * @Date 2021/1/5 19:47
     * @param
     * @return
     */
    UserAuditLog queryLastUserInfoAudit(@Param("id") Integer id, @Param("type") Integer type, @Param("userId") Integer userId);

    /**
     * 根据id修改认证审核信息
     * @Author AppiJ
     * @Date 2021/3/17 14:54
     * @param
     * @return
     */
    int updAuditLogById(UserAuditLog userAuditLog);
}